對Controller有基本認識之後,要開始了解View 的部分,View跟使用者的關係是最為密切的,所有與使用者互動都是在View這邊完成,例如資料的呈現以及表單的送出,在接下來的幾天將詳細介紹View的基本觀念。
專案中的View檔案統一都是放在Views資料夾下,以MVC4的預設範本為例,在先前Controller的部份我們已經有稍微認識到HomeController與AccountController,其中相對應的View就是存放在Views資料夾中與Controller同名的資料夾內,以HomeController為例,其對應的View就是放在Views/Home資料夾下
內面含有_Layout與_LoginPartial與Error三個.cshtml檔案,這資料夾是用來作為全站共用的檔案,來觀察一下_Layout.cshtml,可以發現這個檔案其實就已經把每個頁面會共用的<header>與<footer>都抽出來了,並且透過設定我們就不就在每一頁都寫一堆重複的Html,如果今天需要修改header區塊中的文字也僅需要修改此檔案就好了,不用呆呆的每一隻檔案都打開去修改。
設定主版頁面,打開_ViewStart.cshtml中Layout的設定值就是主版頁面,所以如果你今天要換成其他View只需修改這邊的設定即可,其他非主版頁面的View中若沒有指定Layout,那預設就是讀取_ViewStart.cshtml的Layout設定,這個功能在多個Areas(之後會講)時就非常好用,例如專案中有很多大功能區塊,如果設計師有各別設計版面,此時就可以各別設定_ViewStart.cshtml中Layout的值
這個檔案非常容易跟專案下Web.config搞混XD,這邊是一些Razor View Engine的設定,在使用到第三方組件時,我比較常在這邊add namespace,因為在View裡面沒有using的提示(或是我不知道怎麼用),常常都要自己去複製然後貼到View裡面超麻煩,以PageList這個組件為例(搜尋結果的分頁處理),一定要在View裡面using命名空間才能使用,如下圖
但是專案中常常都會有搜尋的需求,每次遇到有搜尋功能的畫面都要特別是複製貼上這兩行using的程式碼真的很煩,所以此時的add namespace就非常好用,如下圖,就這樣擺脫複製貼上的命運了XD
明天再繼續介紹View的類型,例如一般檢視、部分檢視等等